package linkwechat.pojo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;

import java.sql.Timestamp;
import java.util.Collection;
import java.util.Date;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SysUser implements UserDetails {

    @TableId
    private Long userId;
    /** 部门ID */
    private Long deptId;
    /** 用户账号 */
    private String userName;
    /** 用户昵称 */
    private String nickName;
    /** 用户类型（00系统用户）(11:企业微信用户) */
    private String userType;
    /** 用户邮箱 */
    private String email;
    /** 手机号码 */
    private String phonenumber;
    /** 用户性别 */
    private String sex;
    /** 用户头像 */
    private String avatar;
    /** 密码 */
    private String password;
    /** 帐号状态（0正常 1停用） */
    private Boolean status;
    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;
    /** 最后登陆IP */
    private String loginIp;
    /** 最后登陆时间 */
    private Date loginDate;
    /*** 创建人*/
    private String createBy;
    /*** 创建时间*/
    private Timestamp createTime;
    /*** 修改人*/
    private String updateBy;
    /*** 修改时间*/
    private Timestamp updateTime;
    //    备注
    private String remark;


    /*** 部门对象*/
    @TableField(exist = false)
    private List dept;
    /*** 角色对象*/
    @TableField(exist = false)
    private List<LinkRole> roles;
    /** 角色组 */
    @TableField(exist = false)
    private Long[] roleIds;
    /** 岗位组 */
    @TableField(exist = false)
    private Long[] postIds;




    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getUsername() {
        return userName;
    }

//    账号状态
    @Override
    public boolean isEnabled() {
        return this.status;
    }


    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }


}
